class {tmpl_var name='className'} extends Model
{
	// table columns definition
<TMPL_LOOP name='tableColumns'>
	//! @var {tmpl_var name='name'}		{tmpl_var name='type'}		{tmpl_var name='comment'}

	protected   $_{tmpl_var name='name'};
</TMPL_LOOP>

	// Название Primary Key
	public static $__pKey = Array(<TMPL_IF NAME='tbl_pk_key'><TMPL_LOOP NAME='tbl_pk_key'>"{tmpl_var name='pk'}"<TMPL_IF name="__LAST__"></TMPL_ELSE>,</TMPL_IF></TMPL_LOOP></TMPL_IF>);
	// Название Сиквеносв для полей
	public static $__key_pk_seq = Array(<TMPL_IF NAME='tbl_pk_seq'><TMPL_LOOP NAME='tbl_pk_seq'>"{tmpl_var name='name'}" => "{tmpl_var name='seq_name'}"<TMPL_IF name="__LAST__"></TMPL_ELSE>,</TMPL_IF></TMPL_LOOP></TMPL_IF>);
	// Ключь для кеша
	public static $__cached_table = true;
	// Использует запрос на Many Кешь
	public static $__cache_many = true;
	// Поля таблицы и их типы
	public static $__fields = Array(
<TMPL_LOOP name='tableColumns'>
					"{tmpl_var name='name'}"		=> "{tmpl_var name='type'}"<TMPL_IF name="__LAST__"></TMPL_ELSE>,</TMPL_IF>
			      
</TMPL_LOOP>
			      );
	// setters
<TMPL_IF name='tbl_pk_key'>
<TMPL_LOOP name='tbl_pk_key'>	
	protected function set_{tmpl_var name='pk'}($value){
		if(!$this->__initialized){
			$this->_{tmpl_var name='pk'} = $value;   
		}else{
			throw new Exception("Property {tmpl_var name='pk'} is pkey and does not avaible for set in class ".get_class($this));
		}
	}
</TMPL_LOOP>
</TMPL_IF>
		
}
